A computer-aided design system typically includes software for displaying on a two-dimensional computer display screen or other display device, an image of one or more predefined objects. In a typical application, the objects are parts or components of a product such as a machine or other device such as a vehicle, aircraft, ship, and the like. In a typical situation, a designer will provide input which defines the size and shape of the various components. The computer-aided design system provides a display indicating how the various components will mesh or fit together in three dimensions (or, in some cases, will indicate that the components do not properly fit together, thus alerting the designer that there is an error which needs to be corrected). In many computer-aided design systems, a user may select the point of view of the object or collection of objects, for example, the user may wish to see a front view, a side view, a top view, a perspective view, etc. In some systems, the definition of point of view is essentially static, i.e., the user inputs (e.g., via a keyboard or otherwise) a single point of view, and the software displays an image in accordance with the defined point of view.
In some systems, however, it is desired to simulate a real-time change in the point of view. For purposes of discussion, it is useful to consider the point of view in terms of a "virtual camera," i.e., what the collection of objects would look like if the display simulates the output of a camera as it moved with respect to the simulated objects. In theory, the virtual camera can rotate in any of three rotational directions, and can translate parallel any of three mutually perpendicular translational axes or any combination thereof. In a system in which all six types of motions are possible, the camera is said to possess six degrees of freedom. In such a system the virtual camera can translate or rotate in any direction with respect to the simulated collection of objects.
A particularly desirable design system provides a "fly-through" ability. In a fly-through system, a user may indicate a desired direction of movement and/or rotation of the virtual camera (e.g., using a mouse, joystick, trackball, head tracker, eye tracker, voice actuated command, and the like). In response, the computer display screen, under control of the design system software, will depict a series of images indicating the various views that would be taken by the virtual camera as it moves in the indicated direction.
A fly-through system is particularly useful in the design of complex structures such as aircraft or automobiles which may have thousands or millions of components. A fly-through system provides the user with the ability to inspect any desired portion of the device by quickly and easily moving to the region-of-interest and/or moving the virtual camera around the region-of-interest to inspect it from different points of view. In order to achieve a fly-through system which is useful for location and inspection purposes, and which can be used for relatively long periods of time without unduly tiring the viewer, the series of images presented on the screen during a fly-through operation must have a frame frequency sufficiently high that an illusion of motion, similar to a motion picture, is provided. A frame rate which is too low can make it difficult to locate desired volumes and can cause eye strain or other undesirable visual effect.
Although, for reasons noted above, a high frame-frequency fly-through design system is desirable, it has been difficult to implement, particularly at a reasonable cost, since rendering of images, particularly images which depict a three-dimensional object or scene, is one of the most computationally-intensive and resource-intensive (especially memory-intensive) tasks that can be performed on a computer. In particular, it has been difficult to implement a useful fly-through three-dimensional design system on a workstation-level system, at reasonable expense.
Accordingly, it would be useful to provide a design system which provides for fly-through capability at a high-frame rate, capable of use for designs having millions of components but which can be implemented on a system at reasonable cost, preferably with little or no special hardware requirements beyond those found on a workstation-level computer.